var contracttotal=0,receivablestotal=0,invoicetotal=0;
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

    var Controller = {
        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'facrm/backlog/index',
                    add_url: '',
                    edit_url: '',
                    del_url: '',
                    multi_url: '',
                    table: '',
                }
            });
            //合同
            var table = $("#contract");
            //在普通搜索渲染后
            table.on('post-common-search.bs.table', function (event, table) {
                
            });
            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url+"/types/contract",
                pk: 'id',
                sortName: 'id',
				toolbar: '#toolbar1',
                columns: [
                    [
                        {field: 'id', title: 'ID'},
                        {field: 'number', title: __('合同编号'), operate: "LIKE"},
                        {field: 'name', title: __('合同名称'), operate: "LIKE"},
                        {field: 'customer.name', title: __('客户名称'), operate: false, search: false},
                        {field: 'customer_id', title: __('客户'), visible: false,addclass: 'selectpage',
							extend: 'data-source="facrm/customer/index?filter=%7B\"scene_id\"%3A\"7\"%7D" data-field="name" data-orderBy="id desc"'},
                        {field: 'money', title: __('合同金额'), operate: 'BETWEEN', sortable: true},
                        {field: 'total_price', title: __('产品价格'), operate: 'BETWEEN', sortable: true},

                        {field: 'remark', title: __('备注'), operate: 'LIKE'},
                        {
                            field: 'start_time',
                            title: __('开始时间'),
                            formatter: Table.api.formatter.datetime,
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            sortable: true,
							extend: 'autocomplete="off"'
                        },
                        {
                            field: 'end_time',
                            title: __('结束时间'),
                            formatter: Table.api.formatter.datetime,
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            sortable: true,
							extend: 'autocomplete="off"'
                        },
                        {field: 'create_user.nickname', title: __('创建人'), operate: false, search: false},
                        {field: 'create_user_id', title: __('创建人'), visible: false,addclass: 'selectpage',
							extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                        {field: 'order_admin.nickname', title: __('签约人'), operate: false, search: false},
                        {field: 'order_admin_id', title: __('签约人'), visible: false,addclass: 'selectpage',
							extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                        {
                            field: 'create_time',
                            title: __('创建时间'),
                            formatter: Table.api.formatter.datetime,
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            sortable: true,
							extend: 'autocomplete="off"'
                        },
                        {
                            field: 'check_status',
                            title: __('Status'),
                            formatter: Table.api.formatter.status,
                            searchList: {0: __('待审核'), 1: __('审核中'), 2: __('审核通过'),3: __('审核未通过')}
                        },
                        {
                            field: 'operate',
                            title: __('Operate'),
                            table: table,
                            events: Table.api.events.operate,
                            buttons: [
                                {
                                    name: 'verify',
                                    text: '审核',
                                    title: '合同审核',
                                    icon: 'fa fa-pencil',
                                    classname: 'btn btn-xs btn-success  btn-dialog',
                                    url: 'facrm/backlog/verify/types/contract',

                                },
                            ],
                            formatter: Table.api.formatter.operate,
                        }

                    ]
                ],
                onLoadSuccess: function (data) {
                    contracttotal=data.total;
                    Controller.api.sidebar(".contract",data.total);
                },
                //启用固定列
                fixedColumns: true,
                //固定右侧列数
                fixedRightNumber: 1,
            });
            // 为表格绑定事件
            Table.api.bindevent(table);

            //回款
            var receivables  = $("#receivables");
            receivables.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url+"/types/receivables",
                pk: 'id',
                sortName: 'id',
                toolbar: '#toolbar2',
                queryParams: function (params) {
                    return params
                },
                columns: [
                    [
                        {field: 'id', title: 'ID'},
                        {field: 'number', title: __('回款编号'), operate: "LIKE"},
						{field: 'money', title: __('回款金额'), operate: 'BETWEEN', sortable: true},
                        {field: 'contract.number', title: __('合同编号'), operate: false},
                        {field: 'contract.name', title: __('合同名称'), operate: false},

                        {field: 'customer.name', title: __('客户名称'), operate: false, search: false},
                       
                        {field: 'contract.money', title: __('合同金额'), operate: false},

                        {field: 'remark', title: __('备注'), operate: 'LIKE'},
      
                        {field: 'create_user.nickname', title: __('创建人'), operate: false, search: false},
                        {field: 'create_user_id', title: __('创建人'), visible: false,addclass: 'selectpage',
							extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                        {field: 'order_admin.nickname', title: __('签约人'), operate: false, search: false},
                        {field: 'order_admin_id', title: __('签约人'), visible: false,addclass: 'selectpage',
							extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                        {
                            field: 'create_time',
                            title: __('创建时间'),
                            formatter: Table.api.formatter.datetime,
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            sortable: true,
							extend: 'autocomplete="off"'
                        },
                        {
                            field: 'check_status',
                            title: __('Status'),
                            formatter: Table.api.formatter.status,
                            searchList: {0: __('待审核'), 1: __('审核中'), 2: __('审核通过'),3: __('审核未通过')}
                        },
                        {
                            field: 'operate',
                            title: __('Operate'),
                            table: receivables,
                            events: Table.api.events.operate,
                            buttons: [
                                {
                                    name: 'verify',
                                    text: '审核',
                                    title: '回款审核',
                                    icon: 'fa fa-pencil',
                                    classname: 'btn btn-xs btn-success  btn-dialog',
                                    url: 'facrm/backlog/verify/types/receivables',

                                },
                            ],
                            formatter: Table.api.formatter.operate,
                        }
                    ]
                ],
                onLoadSuccess: function (data) {
                    receivablestotal=data.total;
                    Controller.api.sidebar(".receivables",data.total);
                },
                //启用固定列
                fixedColumns: true,
                //固定右侧列数
                fixedRightNumber: 1,
            });
            // 初始化表格
            Table.api.bindevent(receivables);//当内容渲染完成后
			
			
			//发票
            var invoice  = $("#invoice");
            invoice.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url+"/types/invoice",
                pk: 'id',
                sortName: 'id',
                toolbar: '#toolbar3',
                queryParams: function (params) {
                    return params
                },
                columns: [
                    [
                        {field: 'id', title: 'ID'},
                        {field: 'contract_id', title: __('合同编号'),  align: 'left', formatter : function (value, row, index) {
                                if (!row.contract) return '-';
                                return '<a href="javascript:void(0);" data-url="facrm/contract/index/detail/ids/' + row.contract_id
                                    +'" data-area="[&quot;100%&quot;,&quot;100%&quot;]" class="btn-dialog" data-title="合同详情:'+  row.contract.number+'">'+ row.contract.number+'</a>';
                            },
                            addclass: 'selectpage',
                            extend: 'data-source="facrm/contract/index/selectpage" data-field="name"'},
                        {field: 'contract.name', title: __('合同名称'),  align: 'left', formatter : function (value, row, index) {
                                if (!row.contract) return '-';
                                return '<a href="javascript:void(0);" data-url="facrm/contract/index/detail/ids/' + row.contract_id
                                    +'" data-area="[&quot;100%&quot;,&quot;100%&quot;]" class="btn-dialog" data-title="合同详情:'+  row.contract.name+'">'+ row.contract.name+'</a>';
                            }},

                        {field: 'customer_id', title: __('客户名称'), search: false,  align: 'left', formatter : function (value, row, index) {
                                if (!row.customer) return '-';
                                return '<a href="javascript:void(0);" data-url="facrm/customer/index/detail/ids/' + row.customer.id
                                    +'" data-area="[&quot;100%&quot;,&quot;100%&quot;]" class="btn-dialog" data-title="'+ row.customer.name+'">'+ row.customer.name+'</a>';
                            },addclass: 'selectpage',
                            extend: 'data-source="facrm/customer/index?filter=%7B\"scene_id\"%3A\"1\"%7D" data-field="name" data-orderBy="id desc"'},

                        {field: 'money', title: __('发票金额'), operate: 'BETWEEN', sortable: true},
                        {field: 'invoice_body', title: __('开票主体'), operate: 'LIKE'},
                        {field: 'invoice_name', title: __('发票抬头'), operate: 'LIKE'},
                        {field: 'invoice_issue', title: __('抬头类型'),  formatter: Table.api.formatter.status, searchList: {1: __('企业'), 2: __('个人'), 3: __('事业单位')}},
                        {field: 'invoice_type', title: __('发票类型'),  formatter: Table.api.formatter.status, searchList: {1: __('增普'), 2: __('增专')}},
                        {field: 'register_no', title: __('统一社会信用代码'), operate: 'LIKE'},
                        {field: 'email', title: __('接收邮箱'), operate: 'LIKE'},
                        {field: 'user_name', title: __('收件人'), operate: 'LIKE'},
                        {field: 'user_phone', title: __('收件手机'), operate: 'LIKE'},
                        {field: 'user_address', title: __('邮寄地址'), operate: 'LIKE'},
                        {field: 'remarks', title: __('备注'), operate: 'LIKE'},

                        {field: 'create_user.nickname', title: __('创建人'), operate: false, search: false,
                            addclass: 'selectpage',
                            extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                        {field: 'create_user_id', title: __('创建人'), visible: false,
                            addclass: 'selectpage',
                            extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                        {
                            field: 'create_time',
                            title: __('创建时间'),
                            formatter: Table.api.formatter.datetime,
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            sortable: true,
                            extend: 'autocomplete="off"'

                        },

                        {
                            field: 'check_status',
                            title: __('审核状态'),
                            formatter: function (value, row, index) {
                                var check_status={0: __('待审核'), 1: __('审核中'), 2: __('审核通过'),3: __('审核未通过')};
                                var status={0:'未开票',1:'开票中',2:'已开票',3:'开票失败'};
                                retrunstr='';
                                if(row['check_status']==2){
                                    retrunstr='(在线'+status[row['status']]+')';
                                }
                                return check_status[row['check_status']]+retrunstr;
                            },
                            searchList: {0: __('待审核'), 1: __('审核中'), 2: __('审核通过'),3: __('审核未通过')}
                        },
                        {
                            field: 'status',
                            title: __('Status'),
                            visible: false,
                            searchList: {0:'未开票',1:'开票中',2:'已开票',3:'开票失败'}
                        },
                        {
                            field: 'operate',
                            title: __('Operate'),
                            table: invoice,
                            events: Table.api.events.operate,
                            buttons: [
                                {
                                    name: 'verify',
                                    text: '审核',
                                    title: '回款审核',
                                    icon: 'fa fa-pencil',
                                    classname: 'btn btn-xs btn-success  btn-dialog',
                                    url: 'facrm/backlog/verify/types/invoice',

                                },
                            ],
                            formatter: Table.api.formatter.operate,
                        }
                    ]
                ],
                onLoadSuccess: function (data) {
                    invoicetotal=data.total;
                    Controller.api.sidebar(".invoice",data.total);
                },
                //启用固定列
                fixedColumns: true,
                //固定右侧列数
                fixedRightNumber: 1,
            });
            // 初始化表格
            Table.api.bindevent(invoice);//当内容渲染完成后


        },
        add: function () {
            Controller.api.bindevent();
        },
        verify: function () {
            Controller.api.bindevent();

            $('#modelProduct').on('show.bs.modal', function (e) {
                var btn = $(e.relatedTarget)
            });
            //驳回
            $(document).on('click', ".btn-reject", function () {
                var that = this;
                Layer.prompt({title: __("输入驳回理由"), formType: 2}, function(text, index){
                    Fast.api.ajax({
                    url:'facrm/backlog/verify/ids/'+ids+"/types/"+types,
                    data:{type:'reject',ids:ids,remark:text}
                    }
                    , function () {
                            parent.$(".btn-refresh").trigger("click");
                            parent.Layer.closeAll();
                    }, function () {
                        alert(__("提交错误"));
                    });
                });
            });
            $(document).on('click', ".btn-success", function () {
                var that = this;
                var next_admin_id=$("#c-next_admin_id").val();
                Layer.confirm(
                    __('您确定要审批通过嘛?'),
                    {icon: 3, title: __('Warning'), shadeClose: true},
                    function (index) {
                        Fast.api.ajax({
                                url:'facrm/backlog/verify/ids/'+ids+"/types/"+types,
                                data:{type:'',ids:ids,next_admin_id:next_admin_id}
                            }
                            , function () {
                                parent.$(".btn-refresh").trigger("click");
                                parent.Layer.closeAll();
                            }, function () {

                            });

                    }
                );

            });
            Fast.api.ajax({
                type: 'GET',
                url: 'facrm/fields/get_fields_html',
                data: {source: types=="receivables"?'contract_receivables':types, 'id': ids}
            }, function (data) {
                $("#extend").html(data.html);
                Form.api.bindevent($("#extend"));
                return false;
            },function () {
                return false;
            });

        },
        
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
            },
            sidebar:function (type,total) {
                Backend.api.sidebar({
                    'facrm/backlog': receivablestotal+contracttotal+invoicetotal
                });
                $('.nav-tabs '+type+" small").html(total==0?'':total);
            }

        }
    };
    return Controller;
});